home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / zpont311.lha / zpoint-3.11 / Rexx / MultiPufferSortIn.zprx < prev    next >
Text File  |  1995-03-11  |  7KB  |  201 lines

  1. /*
  2.     $VER: MultiPufferSortIn.zprx 1.1 (04.03.95) Copyright (c) Nils Görs
  3.  
  4.     Dies ist ein ARexx-Skript für Zodiac's Point, mit dem man mehrere
  5.     gepackte und ungepackte, Puffer in einem  Arbeitsschritt  auf be-
  6.     queme Weise einsortieren lassen kann.  Dieses Skript unterstützt,
  7.     bisher, LhA und LZX Archive.
  8.  
  9.     Sie dürfen dieses Skript beliebig kopieren,  solange  es  zusammen
  10.     mit  Zodiac's  Point  eingesetzt wird, aber verändern Sie es bitte
  11.     nicht ohne Erlaubnis des Autors.
  12.  
  13.  
  14.     Sie erreichen den Autor wie folgt:
  15.  
  16.        Nils Görs              Tel. : +49 (0)202 784258
  17.        Kaiserstr. 97a         EMail: N.Goers@Art-Line.wupper.de
  18.        42329 Wuppertal          oder über das ZP-Support-Brett.
  19.  
  20.    Verwenden Sie bitte nach Möglichkeit elektronische Post!
  21.  
  22.  
  23.     Hinweise zur Installation:
  24.  
  25.     Kopieren sie dieses Skript in  das  Rexx-Verzeichnis  von  ZP  und
  26.     fügen  sie  danach  der  Datei  'fkeys.zp'  auf Wunsch den Eintrag
  27.     "F1:SYS:Rexxc/RX ZPOINT:Rexx/MultiPufferSortIn.zprx %s" hinzu.
  28.     Alternativ können auch folgende Zeilen in die Datei usermenus.zp
  29.     eingefügt werden:
  30.  
  31.     *Nachrichtenpuffer einsortieren
  32.     Sys:Rexxc/RX ZPoint:Rexx/MultiPufferSortIn.zprx %s
  33.  
  34.    Das Skript benötigt Jürgen Kohrmeyers "rexxtricks.library" und
  35.    die "rexxreqtools.library" von Nico François.                  */
  36.  
  37.  
  38. /* Welchen Pfad soll ich zum entpacken verwenden ?                */
  39. DestDir    = "t:Unpacked/"
  40. /*----------------------------------------------------------------*/
  41. /* Wie soll das File heißen, in das geJoint werden soll ?         */
  42. DestPuffer = "T:PUFFER"
  43. /*----------------------------------------------------------------*/
  44. /* Wo soll sich das Verzeichniss für eine Speichersparende ein-
  45.    sortierung befinden ?                                          */
  46. LowMemDir  = "DH2:T/"
  47. /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  48.  *      Bitte geben Sie hier ihre Präferenzen ein !                *
  49.  *******************************************************************/
  50.  
  51. /*******************************************************************
  52.  *      Bitte unterhalb dieser Zeile nichts mehr verändern!        *
  53.  *******************************************************************/
  54.  
  55. NL = '0a'x                      /* Zeichen für Zeilenumbruch */
  56.  
  57. OPTIONS RESULTS
  58.  
  59. /* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
  60. PARSE ARG zpPort
  61.  
  62. IF zpPort == "" THEN
  63.    zpPort = "ZPoint"
  64. ADDRESS VALUE zpPort
  65.  
  66. /* öffne alle nötigen libraries - wenn nicht möglich Programmende */
  67.  
  68. IF ~SHOW('LIBRARIES','rexxreqtools.library') THEN
  69.   IF ~ADDLIB('rexxreqtools.library',0,-30,0) THEN
  70.     EXIT
  71.  
  72. IF ~SHOW('LIBRARIES','rexxtricks.library') THEN
  73.   IF ~ADDLIB('rexxtricks.library',0,-30,0) THEN
  74.     EXIT
  75.  
  76. /* ------------------------ Hauptprogramm ------------------------ */
  77.  
  78. WHICHLEVEL
  79. IF (RESULT ~= 'MAINMENU') THEN
  80. DO
  81. IF (RESULT = 'BOARD') THEN
  82.    BOARDMENU
  83.    MAINMENU
  84. END
  85.  
  86. CALL rtfilerequest(, , "Bitte PUFFER auswählen",,"rt_pubscrname="zpPort "rtfi_flags=freqf_multiselect",files)
  87.  
  88. IF files == 1 THEN               /* ist ein File ausgewählt worden?*/
  89. DO                               /* JA, es ist ein File ausgewählt worden */
  90.     DO i=1 TO files.count
  91.  
  92.      IF ~OPEN(dat,files.i,Read) THEN    /* öffne File */
  93.        DO                               /* hat nicht geklappt! */
  94.         CALL rtezrequest("File:" files.i NL"nicht gefunden!", " ENDE ",,"rt_pubscrname="zpPort)
  95.        EXIT                             /* und Program beenden! */
  96.        END
  97.      ELSE                               /* File konnte geöffnet werden! */
  98.  
  99.        Res=0
  100.       CALL SEEK(dat,2,Begin)            /* springe an das zweite Byte im File */
  101.        String=READCH(dat,3)             /* und lese ab dort drei Zeichen */
  102.        IF COMPARE(String,"-lh") = 0 THEN /* LhA Archiv ?? */
  103.        Res=1
  104.       CALL SEEK(dat,0,Begin)
  105.        String=READCH(dat,3)
  106.        IF COMPARE(String,"LZX") = 0 THEN /* LZX Archiv ?? */
  107.        Res=2
  108.  
  109.       IF Res ~= 0 THEN                  /* Hatten wir ein Archiv ?? */
  110. /************************************************/
  111. /* hier werden die gepackten Puffer einsortiert */
  112. /************************************************/
  113.        DO
  114.      requestresponse "Soll speichersparend (langsamer) einsortiert werden?"
  115.     IF (RC) == 1 THEN CALL Speichersparend
  116.       ADDRESS COMMAND
  117.  
  118.         IF EXISTS(DestDir) = 1 THEN     /* existiert das Verzeichnis ? */
  119.          DO                             /* Ja, es existiert! */
  120.           SAY "lösche" DestDir
  121.           Delete DestDir ALL QUIET      /* dann löschen */
  122.          END
  123.  
  124.         IF EXISTS(DestPuffer) = 1 THEN  /* existiert ein PUFFER-File ? */
  125.          DO                             /* Ja, das gibt es! */
  126.           SAY "lösche" Destpuffer
  127.           Delete DestPuffer ALL QUIET   /* Dann löschen wir es doch!*/
  128.          END
  129.  
  130.        IF RES=1 THEN LhA x files.i DestDir          /* LhA Archive entpacken */
  131.        IF RES=2 THEN "LZX -X0 x" files.i DestDir    /* LZX Archive entpacken */
  132.  
  133.        Echo 'Joining files...'
  134.        c:join destdir"#?" AS destpuffer /* und zusammenfügen */
  135.        Delete DestDir ALL QUIET         /* die entpackten Einzelfiles löschen */
  136.  
  137.        ADDRESS VALUE zpPort
  138.         GUILOCK ON
  139.         import destpuffer               /* hier werden die Daten nun einsortiert */
  140.         GUILOCK OFF
  141.  
  142.        ADDRESS COMMAND
  143.        Delete DestPuffer ALL QUIET      /* den PUFFER nach dem Einsortieren löschen*/
  144.        CALL CLOSE(dat)                  /* File wieder schließen */
  145.        END
  146.       ELSE
  147.  
  148. /**************************************************/
  149. /* hier werden die ungepackten Puffer einsortiert */
  150. /**************************************************/
  151.        DO
  152.          import files.i                 /* hier werden die Daten nun einsortiert */
  153.        CALL CLOSE(dat)                  /* File wieder schließen */
  154.     END                                 /* und zurück zum BigLOOP */
  155.        END
  156. END
  157. ELSE
  158.   CALL rtezrequest("Keinen PUFFER ausgewählt!", " ENDE ",,"rt_pubscrname="zpPort)
  159. EXIT
  160.  
  161. Speichersparend:
  162. IF Res=2 THEN CALL Speichersparend_LZX
  163. LhaArchiv = files.i
  164. ADDRESS COMMAND 'LHA vq' files.i '>t:TmpDir'
  165.  
  166. IF ~READFILE("t:TmpDir",zeile) THEN DO
  167. ADDRESS COMMAND 'c:delete t:tmpDir QUIET'
  168.  EXIT
  169. END
  170. DO i = 3 TO zeile.count -1
  171.   ADDRESS COMMAND 'LhA x' LhaArchiv LowMemDir zeile.i '>NIL:'
  172.    import LowMemDir||zeile.i
  173.   ADDRESS COMMAND  'c:delete' LowMemDir||zeile.i 'quiet'
  174. END
  175.   ADDRESS COMMAND 'c:delete t:tmpDir QUIET'
  176. EXIT
  177.  
  178. Speichersparend_LZX:
  179. LZXArchiv = files.i
  180. ADDRESS COMMAND 'LZX -X0 l' files.i '>t:TmpDir'
  181.  
  182. IF ~OPEN(LzxName,'t:TmpDir',Read) THEN EXIT
  183.  
  184. DO I = 1 to 9                            /* die ersten 9  Zeilen */
  185.  String=READLN(LzxName)                  /* können wir vergessen */
  186. END
  187.  
  188. DO WHILE ~EOF(LzxName)
  189.  String=READLN(LzxName)                  /* Zeile lesen */
  190.  StringOut=DELSTR(String,1,43)           /* Zeile auf Filename kürzen */
  191.   If StringOut ~= "" THEN
  192.    DO
  193.     ADDRESS COMMAND "LZX -X0 x" LZXArchiv StringOut LowMemDir '>NIL:'
  194.      import LowMemDir||StringOut
  195.     ADDRESS COMMAND  'c:delete' LowMemDir||StringOut 'quiet >NIL:'
  196.   END
  197. END
  198.    CALL CLOSE(LzxName)
  199.    ADDRESS COMMAND 'c:delete t:tmpDir QUIET >NIL:'
  200. EXIT
  201.